/*
 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package com.sun.corba.se.impl.orbutil.fsm;

import com.sun.corba.se.spi.orbutil.fsm.Guard;
import com.sun.corba.se.spi.orbutil.fsm.GuardBase;
import com.sun.corba.se.spi.orbutil.fsm.Input;
import com.sun.corba.se.spi.orbutil.fsm.Action;
import com.sun.corba.se.spi.orbutil.fsm.State;
import com.sun.corba.se.spi.orbutil.fsm.FSM;

public class GuardedAction {

  private static Guard trueGuard = new GuardBase("true") {
    public Guard.Result evaluate(FSM fsm, Input in) {
      return Guard.Result.ENABLED;
    }
  };

  private Guard guard;
  private Action action;
  private State nextState;

  public GuardedAction(Action action, State nextState) {
    this.guard = trueGuard;
    this.action = action;
    this.nextState = nextState;
  }

  public GuardedAction(Guard guard, Action action, State nextState) {
    this.guard = guard;
    this.action = action;
    this.nextState = nextState;
  }

  public String toString() {
    return "GuardedAction[action=" + action + " guard=" + guard +
        " nextState=" + nextState + "]";
  }

  public Action getAction() {
    return action;
  }

  public Guard getGuard() {
    return guard;
  }

  public State getNextState() {
    return nextState;
  }
}
